package org.springframework.issues.javafx.controller;
import java.net.URL;
import java.util.List;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Modality;
import javafx.stage.Stage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.issues.beans.OrderService;
import org.springframework.issues.javafx.FormattedTableCellFactory;
import org.springframework.issues.javafx.OrderTableRow;
import org.springframework.issues.javafx.TestApplication;
import org.springframework.issues.pojos.Order;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.access.annotation.Secured;
import org.springframework.stereotype.Controller;
@Controller
public class SearchController{
@FXML
private ResourceBundle resources;
@FXML
private URL location;
@FXML
private Button cancel;
@FXML
private Button search;
@FXML
private TextField productName;
@FXML
private TextField maxPrice;
@FXML
private TextField minPrice;
@FXML
private TableColumn<OrderTableRow, Integer> customerId;
@FXML
private TableColumn<OrderTableRow, Boolean> delivered;
@FXML
private TableColumn<OrderTableRow, Integer> deliveryDays;
@FXML
private TableColumn<OrderTableRow, Integer> orderId;
@FXML
private TableColumn<OrderTableRow, Integer> productsCount;
@FXML
private TableColumn<OrderTableRow, Integer> totalOrderPrice;
@FXML
private TableView<OrderTableRow> table;
@Autowired
OrderService orderService;
private Stage dialogStage;
@FXML
public void initialize() {
orderId.setCellValueFactory(new PropertyValueFactory<OrderTableRow, Integer>("orderId"));
orderId.setCellFactory(new FormattedTableCellFactory<OrderTableRow, Integer>(Pos.CENTER_RIGHT));
customerId.setCellValueFactory(new PropertyValueFactory<OrderTableRow, Integer>("customerId"));
customerId.setCellFactory(new FormattedTableCellFactory<OrderTableRow, Integer>(Pos.CENTER_RIGHT));
productsCount.setCellValueFactory(new PropertyValueFactory<OrderTableRow, Integer>("products"));
productsCount.setCellFactory(new FormattedTableCellFactory<OrderTableRow, Integer>(Pos.CENTER_RIGHT));
delivered.setCellValueFactory(new PropertyValueFactory<OrderTableRow, Boolean>("delivered"));
delivered.setCellFactory(new FormattedTableCellFactory<OrderTableRow, Boolean>(Pos.CENTER));
deliveryDays.setCellValueFactory(new PropertyValueFactory<OrderTableRow, Integer>("deliveryDays"));
deliveryDays.setCellFactory(new FormattedTableCellFactory<OrderTableRow, Integer>(Pos.CENTER_RIGHT));
totalOrderPrice.setCellValueFactory(new PropertyValueFactory<OrderTableRow, Integer>("total"));
totalOrderPrice.setCellFactory(new FormattedTableCellFactory<OrderTableRow, Integer>(Pos.CENTER_RIGHT));
List<Order> orders = orderService.findAllOrders();
ObservableList<OrderTableRow> orderRows = FXCollections.observableArrayList();
for(Order order : orders) {
orderRows.add(new OrderTableRow(order));
}
table.setItems(orderRows);
}
public void showView(Stage primaryStage) {
if(dialogStage==null) {
Parent root = (Parent) TestApplication.loader.load("/search.fxml");
Scene scene = new Scene(root, 768, 480);
dialogStage = new Stage();
dialogStage.initOwner(primaryStage);
dialogStage.initModality(Modality.WINDOW_MODAL);
dialogStage.setScene(scene);
dialogStage.setTitle("JavaFX Spring Demo");
}
dialogStage.show();
}
public void search() {
try {
secureSearch();
System.out.println("searching....");
}catch(AccessDeniedException ex) {
System.out.println("you don't has permission to make search");
}
}
@Secured("ROLE_MANAGER")
public void secureSearch() {
}
public void clear() {
table.setItems(null);
productName.setText("");
minPrice.setText("");
maxPrice.setText("");
}
}